﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Anata.Client
{
    /// <summary>
    /// Data service used by the <c>ImageLoaderViewModel</c> to obtain data
    /// </summary>
    public interface ICabangProvider
    {
        void LazyFetchCabangs(int page, Action<List<CabangThumbnailViewModel>> callback);
        void LazyLoadCabang(CabangThumbnailViewModel ctvm, Action<CabangThumbnailViewModel> callback);
        void LazySaveCabang(CabangThumbnailViewModel ctvm, Action<CabangThumbnailViewModel> callback);
        void LazyRemoveCabang(CabangThumbnailViewModel ctvm, Action<CabangThumbnailViewModel> callback);
        void LazyLoadCabang(CabangViewModel cvm, Action<CabangViewModel> callback);
        void LazySaveCabang(CabangViewModel cvm, Action<CabangViewModel> callback);
        void LazyRemoveCabang(CabangViewModel cvm, Action<CabangViewModel> callback);

        void LazyFetchCabangs(int page, Action<List<SimpleCabangViewModel>> callback);
        void LazyLoadCompleteCabang(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazyLoadCabang(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazyLoadCabangLayanan(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazyLoadCabangProduk(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazyLoadCabangRekening(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazyLoadFreeGift(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazyLoadPromo(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazyLoadAset(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazyLoadStok(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazySaveCompleteCabang(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazySaveCabang(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazySaveCabangLayanan(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazySaveCabangProduk(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazySaveCabangRekening(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazySaveFreeGift(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazySavePromo(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazySaveAset(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);
        void LazySaveStok(ComplexCabangViewModel ccvm, Action<ComplexCabangViewModel> callback);

        void LazyLoadCompleteStok(PopupStokViewModel ccvm, Action<PopupStokViewModel> callback);
        void LazyLoadStok(PopupStokViewModel ccvm, Action<PopupStokViewModel> callback);
        void LazyLoadMutasiStok(PopupStokViewModel ccvm, Action<PopupStokViewModel> callback);
        void LazySaveCompleteStok(PopupStokViewModel ccvm, Action<PopupStokViewModel> callback);
        void LazySaveStok(PopupStokViewModel ccvm, Action<PopupStokViewModel> callback);
        void LazySaveMutasiStok(PopupStokViewModel ccvm, Action<PopupStokViewModel> callback);
    }
}
